// 公共的函数（库）：使用频率比较高的函数，封装好了就可以反复使用

// 生成随机颜色
function randomColor(type) {
    var color = '';//存结果
    if (type == 16) {
        //生成16进制随机颜色
        color += '#';//#
        var html = '0987654321abcdef';
        for (var i = 0; i < 6; i++) {
            var num = parseInt(Math.random() * 16);
            color += html[num];
        }
        // console.log(color);

    } else if (type == 'rgb') {
        //生成rgb格式的颜色
        var r = parseInt(Math.random() * 256);//0-255
        var g = parseInt(Math.random() * 256);//0-255
        var b = parseInt(Math.random() * 256);//0-255
        color = 'rgb(' + r + ', ' + g + ', ' + b + ')';
        // console.log(color);
    }
    return color;
};

// 封装四位随机验证码，数字字母组成的随机验证码
function randomCode() {
    var html = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
    // 生成随机数
    var res = '';
    for (var i = 0; i < 4; i++) {
        var num = parseInt(Math.random() * html.length);
        res += html[num];
    }
    return res;
};

// 获取某个范围内随机数的方法
function ranNum(min, max) {
    return parseInt(Math.random() * (max - min + 1)) + min;
};

// 生成50个随机数存到数组里面
function creatArr() {
    var arr = []; // 存放数据的数组
    for (var i = 0; i < 50; i++) {
        var num = ranNum(100, 999); // 生成一个100-999的随机数
        arr.push(num);
    }
    return arr;
};

// 补零函数
function toDb(num) {
    if (num < 10) {
        return '0' + num;
    } else {
        return '' + num;
    }
};

// 封装函数实现通过id查找元素
function getid(id) {
    return document.getElementById(id);
};

// 封装函数实现数组中的数据去重
function norepeat(arr) {
    var newarr = []; // 存去重后的数据
    arr.forEach(function (item) {
        if (newarr.indexOf(item) == -1) {
            // 没有
            newarr.push(item);
        }
    })
    return newarr;
};

function ajax(opt) {
    //默认参数
    let defaultData = {
        data: '',
        asyn: true,
        failure: null
    }

    Object.assign(defaultData, opt);//用默认参数

    let xhr = new XMLHttpRequest();
    if (defaultData.type.toLowerCase() == 'get') {
        //get方式
        if (defaultData.data) {
            defaultData.data = objToStr(defaultData.data);
            defaultData.url += '?' + defaultData.data;
        }
        xhr.open('get', defaultData.url, defaultData.asyn);
        xhr.send(null);
    } else if (defaultData.type.toLowerCase() == 'post') {
        //post方式
        xhr.open('post', defaultData.url, defaultData.asyn);
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
        defaultData.data = objToStr(defaultData.data);
        xhr.send(defaultData.data);
    }

    xhr.onreadystatechange = () => {
        if (xhr.readyState == 4) {
            if (xhr.status == 200 || xhr.status == 304) {
                //成功了
                let data = xhr.responseText;
                defaultData.success(data);//实参
            } else {
                //失败
                if (defaultData.failure) {
                    //写了这个回调
                    defaultData.failure(xhr.status);
                }
            }
        }
    }
}